﻿/**
 * @file LoadPowerSEABeam.h
 * @brief Power SEA Beam 为python装饰器接口准备的封装类
 * @author wangning (2185896382@qq.com)
 * @date 2025-02-27
 */
#ifndef _LOAD_PowerSEABeam_H___
#define _LOAD_PowerSEABeam_H___

#include <QString>
#include "FITK_Component/FITKAcousticsPhysics/PyFITKLoadBase.h"


/**
 * @brief Power SEA Beam 为python装饰器接口准备的封装类
 * @author wangning (2185896382@qq.com)
 * @date 2025-02-27
 */
class  LoadPowerSEABeam : public Acoustics::PyFITKLoadBase
{
public:
    explicit LoadPowerSEABeam(const QString& name);
    explicit LoadPowerSEABeam() = default;
    virtual ~LoadPowerSEABeam() = default;
    /**
    * @brief  设置属性
    * @param[i]  flexureX：弯曲波X频谱
    * @param[i]  flexureY：弯曲波Y频谱
    * @param[i]  extensionZ：拉伸波Z频谱
    * @param[i]  torsionZZ：扭转波ZZ频谱
    * @author wangning (2185896382@qq.com)
    * @date   2025-02-27
    */
    bool setLoadPowerProp(QString& flexureX, QString& flexureY, QString& extensionZ, QString& torsionZZ);
    /**
     * @brief  创建Load Power
     * @param[i]  name 名字
     * @author wangning (2185896382@qq.com)
     * @date   2025-02-27
     */
    bool createLoadPower(const QString& name);
    /**
    * @brief  设置连接器对象
    * @param[i]  obj 连接器对象名字
    * @author wangning (2185896382@qq.com)
    * @date   2025-02-27
    */
    bool setConnection(const QString& obj);

private:
    /**
     * @brief    计算梁的位置点坐标
     * @param[i] objID
     * @param[o] point
     * @param[i] elemIndex
     * @return   void
     * @author   liuzhonghua (liuzhonghuaszch@163.com)
     * @date     2024-12-30
     */
    void calculateBeamLocationPoint(int objID, double* point, int elemIndex);

private:
    /**
     * @brief  连接点
     * @author wangning (2185896382@qq.com)
     * @date   2025-02-27
     */
    double _connectPoint[3] = { 0,0,0 };
};

#endif
